<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>栈-stack</title>
</head>

<body>
    <script>
        // 栈是一种遵从后进先出(LIFO)原则的有序集合。
        // push(element(s)): 添加一个(或几个)新元素到栈顶。
        // pop(): 移除栈顶的元素，同时返回被移除的元素。
        // peek(): 返回栈顶的元素，不对栈做任何修改(这个方法不会移除栈顶的元素，仅仅返回它)
        // isEmpty(): 如果栈里没有任何元素就返回true，否则返回false。
        // clear(): 移除栈里的所有元素。
        // size(): 返回栈里的元素个数。这个方法和数组的length属性很类似。
        function Stack() { //各种属性和方法的声明
            let items = [];
            this.push = function (element) {
                items.push(element);
            }; this.pop = function () {
                return items.pop();
            };
            this.peek = function () {
                return items[items.length - 1];
            };
            this.isEmpty = function () {
                return items.length == 0;
            };

            this.size = function () {
                return items.length;
            };
            this.clear = function () {
                items = [];
            };
            this.print = function () {
                console.log(items.toString());
            };
        }
        let stack = new Stack();
        console.log(stack.isEmpty()); //输出为true
    </script>
</body>

</html>